1. Field of the Invention
The present invention relates in general to storage systems, and particularly to, systems and methods for throttling a fabric login (FLOGI) in a Fibre Channel adapter.
2. Description of the Related Art
In a Fibre Channel storage area network (SAN), a storage unit device and/or host device accesses the SAN through a switch. To start communicating with a switch, the storage unit device and/or host device and the switch need to perform a fabric login (FLOGI) or fabric initialization. The switch must process a FLOGI request within a timeout tolerance of the attached port in order to avoid various error states. A limiting factor in how quickly a switch can process a FLOGI request is its processing capabilities. The more concurrent FLOGIs a switch has to process, the more of its processing power is utilized and each FLOGI will see a slower response.
In System Z environments, for example, there are situations where a switch cannot handle all FLOGI requests within the specific time frame allowed by the attached device. This may occur for three key reasons: 1) a System Z channel is capable of presenting multiple FLOGIs at once during power on or IPL; 2) a System Z channel has a very strict time limit of 0.5 seconds on receiving the login response; and 3) there is a SB-2 timeout limit of 1.5 seconds which could affect application recovery if logical path issues surface.
To satisfy System Z environments, several switches have implemented restrictions on how many concurrent FLOGIs they can handle. One example of some of these restrictions are: 1) the switch cannot receive two FLOGIs within a two second period; 2) one FLOGI cannot be resent four times within a ten second period; 3) three FLOGIs cannot be held by the switch at one time (e.g., one processed, two queued, three blocked); and/or 4) the switch cannot receive eight FLOGIs within a one second period of time.
In the event of a switch receiving too many FLOGIs at once, some switches have been designed to drop a FLOGI or start sending OLS for links that received a FLOGI above the threshold restriction. This is done to limit the number of FLOGIs the switch has to process at once. Once the switch can process more FLOGIs, it will allow the link to initialize and fabric initialization to occur for that port. However, the total time to process the FLOGI can easily exceed the FLOGI response time requirements of certain hosts (e.g., a System Z), which can lead to loss of access to devices.
For storage devices that are coming online after a system reboot, this does not pose an access problem since the devices were not previously online However, during concurrent code load (CCL) of the storage devices, the goal is to ensure continued access through the code update. On some storage controllers, all ports on a host adapter will try to re-establish the fabric connection by simultaneously sending out one FLOGI per port. Host adapters with multiple ports therefore have potential issues due to the switch FLOGI restrictions described above, which can impact the link initialization times and cause host access problems if measures are not taken to restrict the number of FLOGIs that are concurrently sent.